/**   
* @Title: ArchiveclassmanagerService.java 
* @Package avicit.im.lantop.basic.archiveclassmanager.service 
* @Description: fixme(用一句话描述该文件做什么) 
* @author A18ccms A18ccms_gmail_com   
* @date 2014-9-23 下午1:43:49 
* @version V1.0   
*/
package avicit.im.lantop.basic.archiveclassmanager.action.service;

import java.util.List;
import java.util.Map;

import avicit.im.lantop.basic.archiveclassmanager.domain.LantopArchiveClass;
import avicit.platform6.commons.utils.web.TreeNode;
import avicit.platform6.core.dao.Paging;

/** <p>金航数码科技有限责任公司</p>
 * <p>作者：钟一华</p>
 * <p>邮箱：feifan1985@163.com</p>
 * <p>创建时间： 2014-9-23 下午1:43:49 </p>
 * <p>类说明：archiveclassmanager模块的业务接口</p>
 * <p>修改记录： </p> 
 */
public interface ArchiveclassmanagerService {

	/**
	 * 递归获取tree当前节点下数据
	 * @author 钟一华
	 * @param id
	 * @param level
	 * @return List<TreeNode>
	 * @throws
	 */
	public List<TreeNode> recurFindTreeNodesByParentId(String id, String orgId, String deptId, int level) throws Exception;

	/**
	 * 根据id获得树节点对应数据
	 * @author 钟一华
	 * @param id
	 * @return LantopArchiveClass
	 * @throws
	 */
	public LantopArchiveClass getArchiveclassmanagerById(String id) throws Exception;

	/**
	 * 通过id获得节点排序最大值
	 * @author 钟一华
	 * @param id
	 * @return int
	 * @throws
	 */
	public int getMaxNodeSortNumber(String id) throws Exception;

	/**
	 * 添加tree节点
	 * @author 钟一华
	 * @param lac void
	 * @throws
	 */
	public void saveTree(LantopArchiveClass lac) throws Exception;

	/**
	 * 删除tree节点,并删除节点下的子节点
	 * @author 钟一华
	 * @param id void
	 * @throws
	 */
	public void delTree(String id, String orgId, String deptId, String sysId) throws Exception;

	/**
	 * 复制树节点和节点下的子节点
	 * @author 钟一华
	 * @param parentId
	 * @param copyId void
	 * @throws
	 */
	public void saveCopyTreeData(String parentId, String copyId, String orgId, String deptId, String sysId, String userId, String ip) throws Exception;

	/**
	 * 获得节点路径
	 * @author 钟一华 
	 * @param pId
	 * @return String
	 * @throws
	 */
	public String getNodePathByParentId(String pId) throws Exception;

	/**
	 * 通过path拿到pathName及仅部门可见设置
	 * @author 钟一华
	 * @param path
	 * @return Map<String,Object>
	 * @throws
	 */
	public Map<String,Object> getPathNameByPath(String path) throws Exception;

	/**
	 * 通过path拿到pathName检索模块使用
	 * @author 郭亮
	 * @param path
	 * @return String
	 * @throws
	 */
	public String getPathNameByPathForSearch(String path) throws Exception;

	/**
	 * 获得向上模板数据id
	 * @author 钟一华
	 * @param id
	 * @return
	 * @throws Exception List<Map<String,Object>>
	 * @throws
	 */
	public List<LantopArchiveClass> getModelData(String id) throws Exception;

	/**
	 * 判断新建节点名称是否已存在
	 * @author 钟一华
	 * @param parentId
	 * @param nodeName
	 * @return
	 * @throws Exception boolean
	 * @throws
	 */
	public boolean checkNodeNameByIntfs(String parentId, String nodeName) throws Exception;

	/**
	 * 判断节点名称是否存在
	 * @param parentId
	 * @param nodeName
	 * @param id
	 * @return
	 * @throws Exception boolean
	 * @throws
	 */
	public boolean checkNodeNameByIdByIntfs(String parentId, String nodeName, String id) throws Exception;

	/**
	 * 判断目标节点是否存在重复数据
	 * @author 钟一华
	 * @param copyId
	 * @param parentId
	 * @return
	 * @throws Exception boolean
	 * @throws
	 */
	public boolean isRepeatNode(String copyId, String parentId) throws Exception;

	/**
	 * 更新节点数据
	 * @author 钟一华
	 * @param id
	 * @param sortNo
	 * @param className
	 * @param remark
	 * @param attribute01 仅部门可见
	 * @throws Exception void
	 * @throws
	 */
	public void updateData(String id, String sortNo, String className, String remark,String attribute01) throws Exception;

	/**
	 * 更新树节点信息
	 * @param id
	 * @param nodeName
	 * @param parentPath
	 * @throws Exception void
	 * @throws
	 */
	public void updateTreeNodeData(String id, String nodeName, String parentPath) throws Exception;

	/**
	 * 获得档案分类数信息集合
	 * @return List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String, Object>> getArchiveClassList();

	/**
	 * 通过parentId获得子节点数据
	 * @author 钟一华
	 * @param parentId
	 * @return
	 * @throws Exception Paging<LantopArchiveClass>
	 * @throws
	 */
	public Paging<LantopArchiveClass> getTreeDataByParentId(Paging<LantopArchiveClass> page, String parentId) throws Exception;

	/**
	 * 通过查询条件,返回查询到的节点路径集合
	 * @author 钟一华
	 * @param nodeName
	 * @return
	 * @throws Exception String
	 * @throws
	 */
	public List<String> getNodePathsByNodeName(String nodeName) throws Exception;

	/**
	 * 树查询方法
	 * @author 钟一华
	 * @param orgId
	 * @param deptId
	 * @param id
	 * @param paths
	 * @param value
	 * @return
	 * @throws Exception List<TreeNode>
	 * @throws
	 */
	public List<TreeNode> findSearchTreeNode(String orgId, String deptId, String id, List<String> paths, String value) throws Exception;

	/**
	 * 获得节点下的子节点
	 * @author 钟一华
	 * @return List<LantopArchiveClass>
	 * @throws
	 */
	public List<LantopArchiveClass> getNodeByParentId(String parentId) throws Exception;

	/**
	 * 文件类型根据数据节点ID获取tabNodeId（就是‘个人文件’或者‘部门文件’的节点ID）
	 * @author 郭亮
	 * @param nodeId 节点ID
	 * @return
	 * @throws Exception String
	 */
	public String getFileTabNodeIdByNodeId(String nodeId) throws Exception;

	/**
	 * 根据nodeId获取模版文件夹名称
	 * @author 郭亮
	 * @param nodeId
	 * @return
	 * @throws Exception String
	 */
	public String getModelFileNameByNodeId(String nodeId) throws Exception;
	
	/**
	 * 根据数据节点nodeId获取ModelNodeId（模板文件夹NODE_ID）
	 * @param nodeId
	 * @return
	 * @throws Exception String
	 * @throws
	 */
	public String getFileModelNodeIdByNodeId(String nodeId) throws Exception;
	public List<TreeNode> getArchiveClassTreeNodeToDataNodeInfoByIntfsBatchPrint(String orgId, String deptId, String sysId, String archiveType, Map<String, Object> params) throws Exception;
	
	/**
	 * 根据节点ID获取节点信息
	 * @param nodeId
	 * @return
	 * @throws Exception List<Map<String,Object>>
	 * @throws
	 */
	public List<Map<String,Object>> getArchiveClassTreeNodeByNodeId(String nodeId) throws Exception;
	
	/**
	 * 通过节点集合返回数据节点信息
	 * @param nodeId
	 * @return
	 * @throws Exception Map<String,Object>
	 * @throws
	 */
	public Map<String, Object> getDataNodeInfoByParam(Map<String, Object> param) throws Exception;
}
